package 链表;

public class NC66两个链表的第一个公共节点 {

    /**
     * 如题
     */

    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {

        if(headA==null||headB==null){
            return null;
        }

        ListNode start1=headA;
        ListNode start2=headB;
        //两个链表总会相遇,那么就算为空了,重新赋值继续走下去
        while (headA!=headB){
            if(headA==null){
                headA=start1;
            }else{
                headA = headA.next;
            }
            //请else,否则会返回null
            if(headB==null){
                headB=start2;
            }else {
                headB = headB.next;
            }
        }

        return headA;
    }

    public static void main(String[] args) {
        NC66两个链表的第一个公共节点 n=new NC66两个链表的第一个公共节点();
        ListNode listNode=new ListNode(3);
        ListNode listNode1=new ListNode(2);
        listNode1.next=listNode;
        ListNode intersectionNode = n.getIntersectionNode(listNode, listNode1);
        System.out.println(intersectionNode.val);
    }

}
